影片 - 7 Authentication Concepts Every Developer Should Know
1. 基礎驗證 (Basic Authentication)
- 機制:在 HTTP Header 中傳送 Base64 編碼的
用戶名:密碼。 - 風險:Base64 極易被解碼,除非搭配 HTTPS,否則非常不安全。
- 現況:目前極少在生產環境使用,通常僅限於內部工具。
2. 摘要驗證 (Digest Authentication)
- 機制:使用 MD5 哈希 (Hashing) 處理認證資訊,而非明文編碼。
- 現況:雖然比基礎驗證安全一點,但已過時且現代開發中很少見。
3. API 金鑰 (API Keys)
- 機制:為每個客戶端生成唯一字串(如
X-API-Key),隨請求發送。 - 特點:
- 狀態性:伺服器必須去資料庫比對金鑰與權限(Scopes)。
- 限制:金鑰本身不包含資訊,且通常沒有內建的過期機制。
- 風險:一旦金鑰外洩,任何人都能代表該用戶存取資源。
4. 會話驗證 (Session-based Authentication)
- 機制:用戶登入後,伺服器在存儲區(如 Redis 或資料庫)創建 Session 並回傳 Cookie 給瀏覽器。
- 特點:狀態性 (Stateful),伺服器必須記住誰已登入。
- 缺點:在分散式系統或大規模 API 中難以擴展(Scaling)。
5. 持權杖驗證與 JWT (Bearer Authentication & JWT)
- Bearer 模式:核心邏輯是「誰持有權杖,誰就能存取」。
- JWT (JSON Web Token):一種經過簽名的 JSON 物件,包含用戶 ID、角色與過期時間。
- 特點:無狀態性 (Stateless),伺服器只需驗證簽名即可確認身分,不需查詢資料庫,擴展性極佳。
- 雙權杖機制:
- Access Token:短效期,用於存取 API。
- Refresh Token:長效期,用於更換新的 Access Token。應存存在 HTTP-only Cookies 以防止 XSS 攻擊。
6. OAuth 2.0 與 OpenID Connect (OIDC)
- OAuth 2.0:是一個授權框架(非驗證方法),決定第三方 App 能代表用戶存取哪些資源(如存取你的 Google Drive)。
- OpenID Connect (OIDC):在 OAuth 2.0 之上的驗證層。
- 除了 Access Token,還會回傳一個 ID Token(包含用戶身分的 JWT)。
- 這是目前主流的「使用 Google/GitHub 登入」所使用的技術。
7. 單一登入與身分協議 (SSO, SAML & OIDC)
- SSO:一種用戶體驗模式,登入一次即可存取多個服務(如 Gmail, YouTube)。
- SAML (安全性聲明標記語言):基於 XML 的身分協議,常用於企業級與舊有系統(如 Salesforce, 企業儀表板)。
- OIDC:現代化的身分協議,使用 JSON/JWT 格式,比 SAML 更輕量且流行。
SAML、OIDC差異

JWT 無狀態性
